package model.service;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import model.dao.RiskIDAO;
import model.dao.RiskIjdbcDAO;
import model.vo.ListVO;
import model.vo.MakindVO;
import model.vo.MasecretVO;
import model.vo.MasecurityVO;
import model.vo.MraassetVO;
import model.vo.MrainfoVO;
import model.vo.MridentyVO;
import model.vo.MsoaVO;
import model.vo.MtkindVO;
import model.vo.MtlistVO;
import model.vo.MvlistVO;
import model.vo.MvscoreVO;
import model.vo.RiskScenarioVO;
import model.vo.StateReportVO;
import model.vo.TbPublicVO;
import model.vo.TdoaVO;
import model.vo.TracontVO;
import model.vo.TreriskVO;
import model.vo.TriskplanVO;
import model.vo.TtriskcalcVO;

public interface RiskIService {
	public void setRiskIDAO(RiskIDAO riskIDAO);
	public void setRiskIjdbcDAO(RiskIjdbcDAO riskIjdbcDAO);
	//자산유형목록 페이지로 이동
	public List magam_popup(int pro_id) throws SQLException ;
	//평가된 카운터 숫자(count)
	public int pyungCount(int pro_id, String tableName, String columName, String searchText) throws SQLException;
	//평가된 카운터 숫자(count)(취약성 평가 부분)
	public int vpyungCount(int pro_id, String tableName, String columName, int v_gubun, String searchText) throws SQLException;
	//최대 순번 구하기
	public int maxNo(String menuName,int pro_id) throws SQLException;
	//[기준수립]
	//(자산유형목록)
	//자산유형목록 페이지로 이동
	public List baseA() throws SQLException;
	public void baseA_insert(TbPublicVO vo) throws SQLException;
	public void baseA_delete(String base_id,String base_lev1) throws SQLException;
	public TbPublicVO baseA_updatePage(String base_lev2cd) throws SQLException;
	public void baseA_update(TbPublicVO vo) throws SQLException;
	
	//(위협목록)
	//위협목록 페이지로 이동
	public List baseT(int pro_id) throws SQLException;
	public void baseT_insert(MtkindVO vo) throws SQLException;
	public void baseT_delete(String base_levAll,int pro_id) throws SQLException;
	public MtkindVO baseT_updatePage(String base_levAll,int pro_id) throws SQLException;
	public void baseT_update(MtkindVO vo) throws SQLException;
	
	//(취약성목록)
	//취약성목록 페이지로 이동
	public List baseV(int pro_id) throws SQLException;
	public void baseV_insert(MvlistVO vo) throws SQLException;
	public void baseV_delete(String ts_cdAll,int pro_id) throws SQLException;
	public MvlistVO baseV_updatePage(String ts_cdAll,int pro_id) throws SQLException;
	public void baseV_update(MvlistVO vo) throws SQLException;
	
	
	//[자산식별]
	//1.자산기준수립
	//(자산유형분류기준)
	//자산유형분류기준 페이지로 이동
	public List makind(int pro_id) throws SQLException;
	public ArrayList<MakindVO> makindMap(int pro_id) throws SQLException;
	public List asset_kind(int pro_id) throws SQLException;
	public MakindVO asset_kindData(String base_lev1) throws SQLException;
	//public Integer assetMaxNo() throws SQLException;
	public void makind_insert(MakindVO vo) throws SQLException;
	public void makind_delete(String akId,String proId) throws SQLException;
	public MakindVO makind_updatePage(String akId,int pro_id) throws SQLException;
	public void makind_update(MakindVO vo) throws SQLException;
	
	//(자산보안등급평가기준)
	public List masecurity(int pro_id) throws SQLException;
	//public Integer assetResultMaxNo() throws SQLException;
	public void masecurity_insert(MasecurityVO vo) throws SQLException;
	public void masecurity_delete(String ascuId,String proId) throws SQLException;
	public MasecurityVO masecurity_updatePage(String ascuId,int pro_id) throws SQLException;
	public void masecurity_update(MasecurityVO vo) throws SQLException;
	
	//(자산기밀등급분류)
	public List masecret(int pro_id) throws SQLException;
	//public Integer assetResultMaxNo() throws SQLException;
	public void masecret_insert(MasecretVO vo) throws SQLException;
	public void masecret_delete(String ascuId,String proId) throws SQLException;
	public MasecretVO masecret_updatePage(String ascuId,int pro_id) throws SQLException;
	public void masecret_update(MasecretVO vo) throws SQLException;
	
	
	
	//2.자산식별및평가
	//(RA정보자산식별)
	//RA정보자산식별 페이지로 이동
	public List mrainfo(Map map) throws SQLException;
	public boolean searchRainfoId(String rainfo_id,String proId) throws SQLException;
	//RA정보자산식별 삭제
	public void mrainfo_delete(String rainfo_id,String proId) throws SQLException;
	public void mrainfo_insert(MrainfoVO vo) throws SQLException;
	public void mrainfo_insertExcel(Map map) throws SQLException;
	public MrainfoVO mrainfo_updatePage(String rainfo_id,int pro_id) throws SQLException;
	public void mrainfo_update(MrainfoVO vo) throws SQLException;
	
	
	//컨테이너 리스트
	public List tracont_list(int pro_id) throws SQLException;
	
	
	//컨테이너2(공통테이블) 리스트
	public List tracont2_list(int pro_id) throws SQLException;
	//컨테이너1(개별테이블) 리스트
	public List tracont1_list(String proId, String rainfo_id) throws SQLException;
	//컨테이너1(개별테이블) 수정테이블 값 
	public TracontVO tracont1_listByRacontNm(String proId, String rainfo_id, String racont_nm) throws SQLException;
//	/공통 컨테이너 사용여부 검사
	public boolean searchUseTracont2(String proId, String base_lev1, String racont_nm) throws SQLException;
	//컨테이너1 등록
	public void tracont1_insert(String proId, String rainfo_id, String base_lev1, String racont_nm) throws SQLException;
	public void tracont1_delete(String proId, String rainfo_id, String racont_nm) throws SQLException;
	public void tracont1_deleteByRacontNm(String proId, String racont_nm) throws SQLException;
	//컨테이너2 등록
	public void tracont2_insert(String proId, String base_lev1, String racont_nm) throws SQLException;
	public void tracont2_delete(String proId, String racont_nm) throws SQLException;
	
	//컨테이너 등록 (엑셀)
	public void tracont_insertExcel(Map map) throws SQLException;
	/*
	public List changeCon(String proId,String rainfo_id) throws SQLException;
	//컨테이너 삭제
	public void mrainfoCon_delete(String rainfo_id,String racontId,String proId) throws SQLException;
	//컨테이너 등록
	public void tracont_insert(TracontVO vo) throws SQLException;
	//컨테이너 수정
	public void tracont_update(TracontVO vo) throws SQLException;
	//컨테이너 등록 테이블 값 확인 및 생성
	public TracontVO tracontTable(String rainfo_id,String racontId,String akId,String proId) throws SQLException;
	//컨테이너 최대 순번 구해오기
	public Integer tracont_maxNo(String rainfo_id, String proId) throws SQLException;
	*/
	
	//(RA정보자산평가)
	//RA정보자산평가 페이지로 이동
	//public List mrainfop(int pro_id) throws SQLException;
	public List mrainfop(Map map) throws SQLException;
	public MrainfoVO mrainfop_updatePage(String rainfo_id,int pro_id) throws SQLException;
	//RA정보목록작성 기밀등급(역순)
	public List secretLevel(int pro_id) throws SQLException;
	public void mrainfop_update(MrainfoVO vo) throws SQLException;
	

	//(자산현황)
	//자산현황 페이지로 이동
	public List mastate(int pro_id, ArrayList<MakindVO> list) throws SQLException;
	
	
	//(RA정보식별)
	public List mraasset(Map map) throws SQLException;
	public List distinctRacontNmAndCount(int pro_id) throws SQLException;
	public List mappingInfoByRaitemNm(int pro_id,String raitem_nm, String gub) throws SQLException;
	public Integer totalRacontCount(int pro_id) throws SQLException;
	public Integer totalMCount(int pro_id,String raitem_nm, String gub) throws SQLException;
	public MraassetVO mraasset_insertData(String proId,String raitem_nm,String gub) throws SQLException;
	public List mraasset_memoData(int pro_id, String raitem_nm,String gub) throws SQLException;
	public List mappingInfoByRaitemId(int pro_id,String raitem_id) throws SQLException;
	public MraassetVO mraasset_updatePage(int pro_id,String raitem_id) throws SQLException;
	public void mraasset_update(MraassetVO vo) throws SQLException;
	public String mraasset_maxNo(int pro_id,String base_lev1) throws SQLException;
	public String ascLevel(MraassetVO vo) throws SQLException;
	public void mraasset_insert(MraassetVO vo) throws SQLException;
	public void mraasset_insertExcel(Map map) throws SQLException;
	public void traitemInfoInsert(int pro_id, String raitem_id, String rainfo_id) throws SQLException;
	public void mraasset_delete(String raitem_id,String proId) throws SQLException;
	
	//(RA정보평가)
	public List mraassetp(Map map) throws SQLException;
	public MraassetVO mraassetp_updatePage(int pro_id,String raitem_id) throws SQLException;
	public void mraassetp_update(MraassetVO vo) throws SQLException;
	
	
	//[위협식별]
	//(분류기준수립)
	public List mtkind(Map map) throws SQLException;
	public List mtkindSearchBaseLev1(int pro_id, String base_lev1) throws SQLException;
	public List tbtkindSearchBaseLev1(int pro_id, String base_lev1) throws SQLException;
	
	public List distMtkind(int pro_id) throws SQLException;
	public ArrayList<MtkindVO> mtkindArrayList(Map map) throws SQLException;
	public List distTbtkind(int pro_id) throws SQLException;
	public List tbtkind_data(int pro_id) throws SQLException;
	public void mtkind_insert(MtkindVO vo) throws SQLException;
	public MtkindVO tbtkind_InsertData(String base_levAll, int pro_id) throws SQLException;
	public void mtkind_delete(String tkId,String proId) throws SQLException;
	public MtkindVO mtkind_updatePage(String tkId,int pro_id) throws SQLException;
	public void mtkind_update(MtkindVO vo) throws SQLException;
	//위협유형 팝업 새창열기
	//변경(공통 테이블 값 정보 가져오기) 
	public List tbpublicData(String base_id) throws SQLException;
	public TbPublicVO tbpublicDataSelectByBaseLev1(String base_id, String base_lev1) throws SQLException;
	public List tbpublicDataDesc(String base_id) throws SQLException;
	
	//(위협목록작성)
	public List mtlist(Map map) throws SQLException;
	public List t_akind_popup(String pro_id, String base_lev1, String base_lev2, String base_lev3) throws SQLException;
	public List mtlistSearchBaseLev1(int pro_id, String base_lev1) throws SQLException;
	public List distMtlist(int pro_id) throws SQLException;
	public List openTkList(int pro_id) throws SQLException;
	public List openTkListSearchBaseLev1(int pro_id, String base_lev1) throws SQLException;
	public void mtlist_insert(int tk_id,String proId) throws SQLException;
	public void mtlist_delete(String tlId,String proId) throws SQLException;
	public MtlistVO mtlist_updatePage(String tlId,int pro_id) throws SQLException;
	public void mtlist_update(MtlistVO vo) throws SQLException;
	
	
	//[취약성식별]
	//(취약성식별)
	public List mvlist(Map map) throws SQLException;
	public List tbvkind_data(MvlistVO vo) throws SQLException;
	public MvlistVO tbvkind_InsertData(String ts_cdAll, int pro_id) throws SQLException;
	public List tbpublicVLData(TbPublicVO vo) throws SQLException;
	public MvlistVO mvlist_updatePage(String vId,int pro_id) throws SQLException;
	public void mvlist_update(MvlistVO vo) throws SQLException;
	public void mvlist_insert(MvlistVO vo) throws SQLException;
	public void mvlist_delete(String vId,String proId) throws SQLException;
	//취약성 식별 등록 조회 구분 
	public List mvlistDistinct1() throws SQLException;
	public List mvlistDistinct2(MvlistVO vo) throws SQLException;
	public List mvlistDistinct3(MvlistVO vo) throws SQLException;
	
	
	
	
	//[취약성평가]
	//(취약성평가)
	public List mvlistp(int pro_id) throws SQLException;
	public List<String> assetListSelectByMraasset(int pro_id) throws SQLException;
	public List mvlistp_insertPage(MvlistVO vo) throws SQLException;
	public void mvlistp_insert(MvlistVO vo) throws SQLException;
	public void mvlistp_delete(String vId,String proId) throws SQLException;
	public MvlistVO mvlistp_updatePage(String vId,int pro_id) throws SQLException;
	public void mvlistp_update(MvlistVO vo) throws SQLException;
	// 취약성 평가된 식별 숫자(count)
	public Map tvchecklistCount(int pro_id) throws SQLException;

	//(자산공통 취약성 평가)
	public List mavlistp(Map map) throws SQLException;
	public List v_raitem_select(int pro_id, String ts_cd1, String ts_cd2, String ts_cd3) throws SQLException;
	public void mavlistp_delete(String vId,String proId, String vGubun) throws SQLException;
	public MvlistVO mavlistp_updatePage(int pro_id, String vId, String vGubun) throws SQLException;
	public void mavlistp_update(MvlistVO vo) throws SQLException;
	public void mavlistp_insert(int pro_id) throws SQLException;
	
	//[위험시나리오]
	//(위험시나리오)
	public List mridenty(Map map) throws SQLException;
	public List mridentySearch(int pro_id, String ascuId, String ascId) throws SQLException;
	//public List makeRiskScenario(int pro_id, String ascuId, String ascId) throws SQLException;
	public ListVO makeRiskScenario(int pro_id, String ascuId, String ascId, String page) throws SQLException;
	public MridentyVO makeRiskScenarioData(RiskScenarioVO vo) throws SQLException;
	public String mridenty_max_risk_id(MridentyVO vo) throws SQLException;
	public Integer scenarioCount(int pro_id, String ascuId, String ascId) throws SQLException;
	//public void mridenty_insert(MridentyVO vo) throws SQLException;
	public void mridenty_insert(Map map) throws SQLException;
	public void mridenty_insertTest(int pro_id, int ascu_id, int asc_id, String[] hiddenCode) throws SQLException;
	public void mridenty_delete(String riskId,String proId) throws SQLException;
	public MridentyVO mridenty_updatePage(String riskId,int pro_id) throws SQLException;
	public MtlistVO mtlistData(int tk_id,int pro_id) throws SQLException;
	public void mridenty_update(MridentyVO vo) throws SQLException;
	public Integer mraassetCount(int pro_id,String raitem_id) throws SQLException;
	public MraassetVO riskScenarioMemo(int pro_id,String raitem_id) throws SQLException;
	
	//[보안통제효과성평가]
	//(보안통제효과성평가)
	public List mbbtlist(Map map) throws SQLException;
	public void mbbtlist_update(MvlistVO vo) throws SQLException;
	
	
	//[위험 수준 산정 및 평가]
	//(취약성점수 산정기준)
	//취약성점수 산정기준 페이지로 이동
	public List mvscore(int pro_id) throws SQLException;
	public List mvscoreDesc(int pro_id) throws SQLException;
	//public Integer assetResultMaxNo() throws SQLException;
	public void mvscore_insert(MvscoreVO vo) throws SQLException;
	public void mvscore_delete(String vpId,String proId) throws SQLException;
	public MvscoreVO mvscore_updatePage(String vpId,int pro_id) throws SQLException;
	public void mvscore_update(MvscoreVO vo) throws SQLException;
	
	
	//위험등급 결정기준
	//DoA 기준 점수 호출
	public List tdoa(int pro_id) throws SQLException;
	public List tdoa_base() throws SQLException;
	//위험등급 결정기준 등록
	public void mrlevel_insert(String base_id, String base_lev1, String base_lev2, String baseCnt) throws SQLException;
	public void DoA_insert(ArrayList<TdoaVO> list) throws SQLException;
	
	//(위험수준산정)
	public List mrscore(Map map) throws SQLException;
	public MridentyVO mrscore_updatePage(String riskId,int pro_id) throws SQLException;
	public TbPublicVO tbpublicDataVlLevel(int base_lev1) throws SQLException;
	public void mrscore_insert(TtriskcalcVO vo) throws SQLException;
	public void mrscore_insert1(TtriskcalcVO vo) throws SQLException;
	public TtriskcalcVO mrscore_updatePageCal(int pro_id,String riskId) throws SQLException;
	public void mrscore_update(TtriskcalcVO vo) throws SQLException;
	public void mrscore_update1(TtriskcalcVO vo) throws SQLException;
	
	
	//[위험처리계획수립]
	//(위험처리방안선정)
	//위험처리방안선정 페이지로 이동
	public List mridenty3(Map map) throws SQLException;
	public Map mridenty3_updatePage(int pro_id,String riskId) throws SQLException;
	public void mridenty3_insert(TriskplanVO vo) throws SQLException;
	public void mridenty3_update(TriskplanVO vo) throws SQLException;
	
	//(자산위협매트릭스)
	//자산위협매트릭스 페이지로 이동
	//public List atmetrix(int pro_id, Map map) throws SQLException;
	public List atmetrix(int pro_id, ArrayList<MakindVO> list) throws SQLException;
	public void insertAtmetrix(Map map) throws SQLException;
	public void deleteAtmetrix(Map map) throws SQLException;
	
	//(위험취약성매트릭스)
	//위험취약성매트릭스 페이지로 이동
	public List tvmetrix(int pro_id, ArrayList<MtkindVO> list) throws SQLException;
	public void insertTvmetrix(Map map) throws SQLException;
	public void deleteTvmetrix(Map map) throws SQLException;
	
	
	
	//[위험수용]
	//(잔여위험평가)
	//잔여위험평가 페이지로 이동
	public List mridenty4(Map map) throws SQLException;
	public Map mridenty4_updatePage(int pro_id,String riskId) throws SQLException;
	public void mridenty4_insert(TreriskVO vo) throws SQLException;
	public void mridenty4_update(TreriskVO vo) throws SQLException;
	
	
	
	
	
	//[SoA정립]
	//(SoA정립)
	//SoA정립 페이지로 이동
	public List msoa(int pro_id) throws SQLException;
	public List tsoaData(Map map) throws SQLException;
	public Map msoa_insertPage(Map map) throws SQLException;
	public Map msoa_updatePage(Map map) throws SQLException;
	public void msoa_insert(MsoaVO vo) throws SQLException;
	public void msoa_update(MsoaVO vo) throws SQLException;
	public void msoa_delete(String riskId,String proId) throws SQLException;
	public void msoa_SL_insert(Map map) throws SQLException;
	
	
	
	
	//[현황관리]
	public List siteList(int pro_id) throws SQLException;
	public List procList(int pro_id) throws SQLException;
	public List ts_nm2List(int pro_id) throws SQLException;
	public List ts_nm3List(int pro_id, String ts_nm2) throws SQLException;
	public List stateReportResult(StateReportVO vo) throws SQLException;
	
	//엑셀 관련
	public List excelData(Map map, String pageName) throws SQLException;
	
	//엑셀 업로드
	public Map excelUpload(int pro_id,String ext, String savedir, String filename,String reloadPageName) throws SQLException;
	
	
	
	//컨테이너 클릭 이벤트
	public boolean tracont2Flag(String pro_id, String racont_nm, String base_lev1) throws SQLException;
	public List rainfoIDSelect(String pro_id, String racont_nm, String base_lev1) throws SQLException;
	//컨테이너에 컨테이너 유무 조회
	public List contSearch(String pro_id, String racont_nm, String base_lev1) throws SQLException;
	
}
